var $verifyPhoneList = $('#verifyPhoneList')

$(function () {
    // 初始化页面table
    clueListInit();

    // 日期切换功能
    $('#dateType input').on('click', function () {
        // 选择时间范围清空搜索框内容
        $('#contactPhoneMin').val('');
        if ($(this).val() == '5') {
            $('#customInput').fadeIn(200);
        } else {
            $('#customInput').fadeOut(0, function () {
                $('.datepicker').datepicker('setDate', '');
            });
            clueListInit();
        }
    });

    // 日期切换-自定义相关功能
    $('#customDateBtn').on('click', function () {
        if (!$('#startTm').val() && !$('#endTm').val()) {
            $.alert('请选择开始或结束时间！');
        } else {
            clueListInit();
        }
    })

    // 日期切换-自定义-日期控件功能
    $('.datepicker').datepicker({
        language: "zh-CN",
        autoclose: true,
        clearBtn: true,
        todayHighlight: true,
        format: "yyyy-mm-dd"
    });
    $('#startTm').on('changeDate',function(){
        var startDate = $('#startTm').val();
        if (!startDate) {
            $('#endTm').datepicker('setStartDate', '')
            return;
        };

        var endDate = $('#endTm').val();
        if (endDate < startDate) {  // 对比结束日期和新的起止日期，起止日期大于结束日期则清空结束日期
            $('#endTm').val('');
        }
        $('#endTm').datepicker('setStartDate', new Date(startDate));
    });

    // 核实电话呼出弹窗
    $('#verifyPhoneBtn').on('click', function () {
        callCenter();
    });

    // 跟进详情弹窗
    $('#detailModel').on('show.bs.modal', function () {
        var contentTextarea = $('#detailText');
        var submitBtn = $(this).find('button.btn-primary');
        var oContent = contentTextarea.val();
        contentTextarea.on('keyup', function () {
            var newContent = $(this).val();
            if (oContent == newContent) {
                submitBtn.prop('disabled', true);
            } else {
                submitBtn.prop('disabled', false);
            }
        })
    }).on('hidden.bs.modal', function () {
        $('#detailAudio').attr('src', '');
    });
});


/**
 * 功能：初始化table
 */
function clueListInit() {
    $verifyPhoneList.bootstrapTable('destroy');
    $verifyPhoneList.bootstrapTable({
        classes: 'table table-hover table-bordered table-striped',
        url: '/verifyPhone/getVerifyPhoneList',                     // 请求地址
        method: 'post',                                             // 请求方式
        contentType: "application/x-www-form-urlencoded",           // 请求内容类型
        dataType: "json",                                           // 数据类型
        striped: true,                                              // 是否显示行间隔色
        sortable: true,                                             // 是否启用排序
        sortOrder: "desc",                                          // 排序方式
        sortName: 'createTm',                                       // 排序字段
        cache: false,                                               // 是否使用缓存
        showColumns: false,                                         // 显示隐藏列
        showRefresh: false,                                         // 显示刷新按钮
        showToggle: false,                                          // 切换显示样式
        showFooter: false,                                          // 显示Table脚部
        pagination: true,                                           // 是否显示分页
        showPaginationSwitch: false,                                // 是否显示分页按钮
        clickToSelect: false,                                       // 是否启用点击选中行
        singleSelect: false,
        minimumCountColumns: 2,                                     // 最少要显示的列数
        undefinedText: '-',                                         // cell没有值时显示
        sidePagination: "server",                                   // 分页方式：client客户端分页，server服务端分页
        uniqueId: 'verifyId',
        idField: 'verifyId',
        pageSize: globalPageSize,                                   // 每页的记录行数
        pageNumber: 1,                                              // 初始化加载第1页，默认第1页
        pageList: globalPageList,                                   // 可供选择的每页的行数
        queryParams: queryParams,                                   // 查询参数
        columns: [
            {title: '主键', field: 'verifyId', visible: false},
            {title: '关联客户ID', field: 'customerId', visible: false},
            {title: '联系人姓名', field: 'contactName', align: 'left', valign: 'middle',
                formatter: function (value, row, index) {
                    if (value == null) {
                        return '<span style="color: #d5d6e2; -webkit-user-select: none;">双击修改姓名</span>';
                    } else {
                        return value;
                    }
                }
            },
            {title: '电话号码', field: 'contactPhone', align: 'left', valign: 'middle'},
            {title: '通话时长', field: 'callDuration', align: 'left', valign: 'middle'},
            {title: '通话状态', field: 'callStatusStr', align: 'left', valign: 'middle'},
            {title: '信息状态', field: 'msgStatusStr', align: 'left', valign: 'middle',
                formatter: function (value, row, index) {
                    if (value == '有效') {
                        return '<span class="label label-success-light">有效</span>';
                    } else {
                        return '<span class="label label-danger-light">无效</span>';
                    }
                }
            },
            {title: '时间', field: 'createTm', sortable: true, align: 'left', valign: 'middle',
                formatter: function (value) {
                    return new Date(value).Format("yyyy-MM-dd hh:mm:ss");
                }
            },
            {title: '操作', field: 'operate', align: 'right', valign: 'middle', events: operateEvents, formatter: verifyOperate},
        ],
        onDblClickCell: function(field, value, row, $element) {
            if (field == 'contactName') {
                console.log(field, value, row, $element.parents('table'))
                var index = $element.parents('tr').index();
                var cellVal = value || '';
                editCell(row.verifyId, index, field, cellVal, $element);
            }
        },
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onLoadSuccess: function () {

        },
        onLoadError: function (status) {
            if (status == 403) {
                alert("权限不足！禁止访问！");
            } else {
                //加载失败时执行
                alert("加载失败！");
            }
        },
        formatLoadingMessage: function () {
            return "请稍等，加载中...";
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        },
    });
}
function queryParams(params) {
    params.pageSize = params.limit;
    params.pageIndex = (params.offset / params.limit) + 1;
    params.sortName = params.sort;          // 排序列名
    params.sortOrder = params.order;        // 排序方式

    params.dateUnit = $('#dateType input:checked').val();       // 时间条件
    params.startTm = $('#startTm').val();                       // 开始时间
    params.endTm = $('#endTm').val();                           // 结束时间
    params.contactPhone = $('#contactPhoneMin').val();          // 电话号码
    return params;
}

/**
 * 功能：修改单元格信息
 * */
function editCell(verifyId, index, field, value, $element) {
    $.confirm({
        title: '编辑联系人姓名',
        content: '' +
            '<form action="" class="formName">' +
            '<div class="form-group">' +
            '<input type="text" placeholder="请输入联系人姓名" value="' + value + '" class="name form-control" autofocus required>' +
            '</div>' +
            '</form>',
        buttons: {
            formSubmit: {
                text: '提交',
                btnClass: 'btn-primary',
                action: function () {
                    var name = this.$content.find('.name').val();
                    if(!name){
                        $.alert('请输入联系人姓名');
                        return false;
                    }
                    editAction(1, verifyId, name, function () {
                        $element.parents('table').bootstrapTable('updateCell', {index, field, value: name});
                    });
                }
            },
            cancel: {
                text: '取消'
            },
        },
        /*onContentReady: function () {
            var jc = this;
            this.$content.find('form').on('submit', function (e) {
                e.preventDefault();
                jc.$$formSubmit.trigger('click');
            });
        }*/
    });
}

function verifyOperate(value, row, index) {
    var html = '';
    html  += '<button type="button" class="btn btn-default" id="btnDetail">跟进详情</button>';
    // canBind: 1-可关联  0-已关联,不可再次关联
    if (row.canBind == '0') {
        html  += '<button type="button" class="btn btn-default" id="btnRelation">转化为企业联系人</button>';
    } else {
        html  += '<button type="button" class="btn btn-default" id="btnRelation" disabled>转化为企业联系人</button>';
    }
    html  += '<button type="button" class="btn btn-default" id="btnSetStatus">设置状态</button>';

    return html;
}

window.operateEvents = {
    // 跟进详情
    'click #btnDetail': function (e, value, row, index) {
        $('#rowVerifyId').val(row.verifyId);
        $('#detailText').val(row.followDetail);
        getCallRecord(row.verifyId);
        $('#detailModel').modal('show');
    },
    // 关联企业
    'click #btnRelation': function (e, value, row, index) {
        relationTable();
        $('#relationModel').modal('show');
        $('#relationVerifyId').val(row.verifyId);
        $('#relationName').val(row.contactName);
    },
    // 设置状态
    'click #btnSetStatus': function (e, value, row, index) {
        var verifyId = row.verifyId;
        $.alert({
            title: '设置状态',
            content: '该条消息是否有效？',
            buttons: {
                cancel: {
                    text: '取消',
                    btnClass: 'btn-link',
                },
                confirm: {
                    text: '有效',
                    btnClass: 'btn-primary',
                    action: function () {
                        editAction(3, verifyId, 1, function () {
                            $('#verifyPhoneList').bootstrapTable('refresh');
                        });
                    }
                },
                invalid: {
                    text: '无效',
                    btnClass: 'btn-danger',
                    action: function () {
                        editAction(3, verifyId, 2, function () {
                            $('#verifyPhoneList').bootstrapTable('refresh');
                        });
                    }
                }
            }
        });
    },
    // 转化为企业联系人
    'click #btnConversion': function (e, value, row, index) {

    },
};

/**
 * 功能：关联企业table列表初始化
 * */
function relationTable() {
    $.ajax({
        url: '/verifyPhone/getCustomerList',
        type: 'POST',
        success: (function (data) {
            if (data.code == "000000") {
                console.log(data)
                var optionDom = '';
                for (let i = 0; i < data.data.length; i++) {
                    optionDom += '<option value="' + data.data[i].customerId + '">' + data.data[i].customerName + '</option>';
                }
                $('#associatedEnterprise').html(optionDom).selectpicker('refresh');
            } else {
                $.alert();
            }
        }),
        error: (function () {
            $.alert();
        })
    })
}
/**
 * 功能：关联系企业操作
 * 参数：verifyId  customerId-客户ID  contactName-联系人名称
 * */
function subRelation() {
    var contactName = $('#relationName').val();
    var customerId = $('#associatedEnterprise').val();
    var verifyId = $('#relationVerifyId').val();

    if (!contactName) {
        $.alert({
            title: '提醒',
            content: '请填写跟进联系人姓名！'
        })
        return;
    }
    if (!customerId) {
        $.alert({
            title: '提醒',
            content: '请选择要关联的企业！'
        })
        return;
    }

    var data = {
        verifyId,
        customerId,
        contactName,
    };

    $.ajax({
        url: '/verifyPhone/bindCustomer',
        type: 'POST',
        dataType: "json",
        data: data,
        success: (function (data) {
            if (data.code == "000000") {
                $('#relationModel').modal('hide');
                $('#verifyPhoneList').bootstrapTable('refresh');
            } else {
                $.alert('关联企业操作失败，请重试！(' +  data.code + ')');
            }
        }),
        error: (function () {
            $.alert('关联企业操作异常，请重试！');
        })
    });
}

/**
 * 功能：修改跟进详情
 * */
function subDetail() {
    editAction(2, $('#rowVerifyId').val(), $('#detailText').val(), function () {
        $('#detailModel').modal('hide');
        $('#detailModel').find('button.btn-primary').prop('disabled', true);
        $('#verifyPhoneList').bootstrapTable('refresh');
    });
}

/**
 * 功能：获取通话录音
 * */
function getCallRecord(verifyId) {
    $.ajax({
        url: '/verifyPhone/getCallRecord',
        type: 'POST',
        dataType: "json",
        data: {
            verifyId
        },
        success: (function (data) {
            if (data.code == "000000") {
                $('#detailAudio').prop('src', data.data);
                // console.log('通话录音地址：' + data.data);
            } else {
                $.alert('关联企业操作失败，请重试！(' +  data.code + ')');
            }
        }),
        error: (function () {
            $.alert('关联企业操作异常，请重试！');
        })
    });
}

/**
 * 功能：修改姓名、编辑跟进详情、设置状态
 * 参数：type: 1-修改姓名，2-修改跟进详情，3-设置状态
 * */
function editAction(type, verifyId, param, fun) {
    var data = {
        verifyId
    };
    var title;  // 错误提示字段
    switch (type) {
        case 1: // 修改姓名
            data.contactName = param;
            title = '姓名';
            break;
        case 2: // 修改跟进详情
            data.followDetail = param;
            title = '跟进详情';
            break;
        case 3: // 设置状态
            data.msgStatus = param;    // 1-有效传 2-无效
            title = '状态';
            break;
    }

    $.ajax({
        url: '/verifyPhone/updateVerifyPhoneInfo',
        type: 'POST',
        dataType: "json",
        contentType: "application/json;charset=utf-8",
        data: JSON.stringify(data),
        success: (function (data) {
            if (data.code == "000000") {
                fun && fun();
            } else {
                $.alert('修改' + title + '失败，请重试！');
            }
        }),
        error: (function () {
            $.alert("网络异常，请稍后再试!");
        })
    })
}

/**
 * 功能：核实电话
 */
function callCenter () {
    var verifyData = [];

    window.parent.callModal('', verifyData, 4);
}




















